using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using GeroByte;

public partial class Relatorios_Pagamentos : Page
{
    #region Constants

    private const string ALL_TEXT = "[Todos]";

    #endregion

    #region Methods

    #region Private

    #region Prepare DropDownList cbPessoa

    private void preparePessoa()
    {
        if (cbPessoa.Items.FindByText(ALL_TEXT) == null)
        {
            cbPessoa.DataBind();
            var listItem = new ListItem(ALL_TEXT, "-1");
            cbPessoa.Items.Insert(0, listItem);
        }
    }

    private void prepareTipo()
    {
        if (cbTipoDespesa.Items.FindByText(ALL_TEXT) == null)
        {
            cbTipoDespesa.DataBind();
            var listItem = new ListItem(ALL_TEXT, "-1");
            cbTipoDespesa.Items.Insert(0, listItem);
        }
    }

    #endregion

    #endregion

    #region Event Handlers

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            preparePessoa();
            prepareTipo();
        }
    }

    protected void btnFilter_OnClick(object sender, EventArgs e)
    {
        try
        {
            string sqlCommand =
                @"
        SELECT 
            (Select Nome From Pessoa Where PessoaID = PD.PessoaID)  as PessoaNome , 
            [PessoaDespesaID], 
            [Tipo], 
            [Nome], 
            [DiaVencimento], 
            [Quantidade], 
            [Valor], 
            [FormaPagamento], 
            [DiaPagamento], 
            [Juros], 
            [Desconto] , 
            PessoaID
        FROM 
            [PessoaDespesa] PD 
        {REPLACE}
        ORDER BY [DiaVencimento], [Tipo], [Nome]
";
            string condtions = "";
            if (cbPessoa.SelectedIndex > 0)
                condtions += string.Format("PD.PessoaID = {0}", cbPessoa.SelectedValue) + " AND ";
            if (cbTipoDespesa.SelectedIndex > 0)
                condtions += string.Format("PD.Tipo = '{0}'", cbTipoDespesa.SelectedValue) + " AND ";
            if (Test.IsDate(txtVencimentoInicial.Text))
                condtions +=
                    "DiaVencimento >= {d'{data}'}".Replace("{data}",
                                                           Convert.ToDateTime(txtVencimentoInicial.Text).AddDays(-1).
                                                               ToString("yyyy-MM-dd")) + " AND ";
            if (Test.IsDate(txtVencimentoFinal.Text))
                condtions +=
                    "DiaVencimento <= {d'{data}'}".Replace("{data}",
                                                           Convert.ToDateTime(txtVencimentoFinal.Text).AddDays(-1).
                                                               ToString("yyyy-MM-dd")) + " AND ";
            if (Test.IsDate(txtPagamentoInicial.Text))
                condtions +=
                    "DiaPagamento >= {d'{data}'}".Replace("{data}",
                                                          Convert.ToDateTime(txtPagamentoInicial.Text).AddDays(-1).
                                                              ToString("yyyy-MM-dd")) + " AND ";
            if (Test.IsDate(txtPagamentoFinal.Text))
                condtions +=
                    "DiaPagamento <= {d'{data}'}".Replace("{data}",
                                                          Convert.ToDateTime(txtPagamentoFinal.Text).AddDays(-1).
                                                              ToString("yyyy-MM-dd")) + " AND ";
            if (cbVisitantes.SelectedValue != "0")
                condtions += string.Format("PessoaID In (Select PessoaID From Pessoa Where CA={0}) And ",
                                           cbVisitantes.SelectedValue == "1" ? "1" : "0");
            if (chkSomenteContasPagas.Checked)
                condtions += "Pago = 1 AND ";
            if (chkEmAberto.Checked)
                condtions += "Pago = 0 AND ";
            if (condtions.Trim().Length > 0)
            {
                condtions = condtions.Substring(0, condtions.Length - 5);
                sqlCommand = sqlCommand.Replace("{REPLACE}", " WHERE " + condtions);
            }
            else
                sqlCommand = sqlCommand.Replace("{REPLACE}", "");
            dsPessoaDespesa.SelectCommand = sqlCommand;
            dsPessoaDespesa.DataBind();
            grdMain.DataBind();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    #endregion

    #endregion
}